package com.situ.mall.pattern.observer;

import java.util.ArrayList;
import java.util.List;

// 目标对象
public class Subject {
    //保存注册的观察者的集合
    private List<Observer> list = new ArrayList<>();

    //注册观察者对象 registerObserver
    public void attach(Observer observer) {
        list.add(observer);
    }

    //删除观察者 unRegisterObserver
    public void detach(Observer observer) {
        list.remove(observer);
    }

    //通知所有注册的观察者对象
    public void notifyObservers() {
       notifyObservers(null);
    }

    public void notifyObservers(Object obj) {
        for (Observer observer : list) {
            observer.update(this, obj);
        }
    }
}
